package com.ruoyi.manage.controller;

import com.ruoyi.common.core.web.domain.AjaxResult;
import com.ruoyi.manage.DTO.ChargingDTO;
import com.ruoyi.manage.strategy.DetermineTheBasicBillingPolicy;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.math.BigDecimal;

/**
 * @Title:
 * @BelongProjecet online-car-hailing
 * @BelongPackage com.ruoyi.manage.controller
 * @Description: 获取具体的计费策略
 * @Copyright
 * @Author: 马朝斌
 * @Date: 2024-07-03 19:18
 * @Version V1.0
 */

@RestController()
@RequestMapping("/judgmentCharging")
public class JudgmentCharging {
    /**
     * 长途公里数 15KM以上为长途 （单位：km）
     */
    private static final Double LONG_DISTANCE = 15.00;
    /**
     * 长途公里数 15KM以上为长途 （单位：km）
     */
    private static final BigDecimal LONG_DISTANCE_PRICE = new BigDecimal("2.00");
    /**
     * 起步价
     */
    private static final BigDecimal STARTING_PRICE = new BigDecimal("8.0");
    /**
     * 起步公里数（单位：km）
     */
    private static final Double STARTING_KM = 2.00;
    /**
     * 起步时长（单位：分钟）
     */
    private static final Double STARTING_TIME = 4.00;
    /**
     * 超出时长的单价（单位：元/分钟）OutOrderDistanceUnitPrice OutOrderTimeUnitPrice
     */
    private static final BigDecimal OUT_ORDER_TIME_UNIT_PRICE = new BigDecimal("0.42");
    /**
     * 超出里程的单价（单位：元/公里）OutOrderDistanceUnitPrice OutOrderTimeUnitPrice
     */
    private static final BigDecimal OUT_ORDER_DISTANCE_UNIT_PRICE = new BigDecimal("1.95");

    @Autowired
    DetermineTheBasicBillingPolicy determineTheBasicBillingPolicy;

    @PostMapping("/judgmentCharging")
    public AjaxResult judgmentCharging(@RequestBody ChargingDTO chargingDTO) {

        if (chargingDTO == null) {
            return AjaxResult.error("参数错误");
        }
        // 设置起步价
        chargingDTO.setStartingPrice(STARTING_PRICE);
        // 设置起步公里数
        chargingDTO.setStartingKm(STARTING_KM);
        // 设置起步时长
        chargingDTO.setStartingTime(STARTING_TIME);
        // 设置长途的公里数
        chargingDTO.setLongDistance(LONG_DISTANCE);
        // 设置长途价格
        chargingDTO.setLongDistancePrice(LONG_DISTANCE_PRICE);
        // 设置超时费单价
        chargingDTO.setOutOrderTimeUnitPrice(OUT_ORDER_TIME_UNIT_PRICE);
        // 设置超里程费单价
        chargingDTO.setOutOrderDistanceUnitPrice(OUT_ORDER_DISTANCE_UNIT_PRICE);

        String rain = "雨";

        // 判断是否有雨
        if (chargingDTO.getWeather().contains(rain)) {
            // 有雨 基础费用提升
            chargingDTO.setStartingPrice(chargingDTO
                    .getStartingPrice().add(new BigDecimal(5)));

            // // 超里程费加一
            // chargingDTO.setOutOrderDistanceUnitPrice(chargingDTO
            //         .getOutOrderDistanceUnitPrice().add(new BigDecimal(1.50)));
            // // 超时费加一
            // chargingDTO.setOutOrderTimeUnitPrice(chargingDTO
            //         .getOutOrderTimeUnitPrice().add(new BigDecimal(0.58)));
        }
        return determineTheBasicBillingPolicy.determineTheAccountingPolicy(chargingDTO);
    }


}
